package ghostcat.util.core {
	import flash.errors.*;
	import flash.utils.*;

	final public class AbstractUtil extends Object {

		public function AbstractUtil() {
			return;
		} // end function

//		public static function mustBeOverridden(param1, param2:Class, param3:Array):void {
//			var typeName:String;
//			var concreteTypeName:String;
//			var des:XML;
//			var item:XML;
//			var methods:XMLList;
//			var accessors:XMLList;
//			var obj:* = param1;
//			var abstractType:* = param2;
//			var unimplemented:* = param3;
//			typeName = getQualifiedClassName(abstractType);
//			concreteTypeName = getQualifiedClassName(obj);
//			des = describeType(obj);
//			var _loc_6:int = 0;
//			var _loc_7:* = des..method;
//			var _loc_5:* = new XMLList("");
//			for each (_loc_8 in _loc_7) {
//
//				var _loc_9:* = _loc_7[_loc_6];
//				with (_loc_7[_loc_6]) {
//					if (@declaredBy == typeName && unimplemented.indexOf(@name.toString()) != -1) {
//						_loc_5[_loc_6] = _loc_8;
//					}
//				}
//			}
//			methods = _loc_5;
//			var _loc_5:int = 0;
//			var _loc_6:* = methods;
//			while (_loc_6 in _loc_5) {
//
//				item = _loc_6[_loc_5];
//				throw new IllegalOperationError("�鷽�� " + item.@name + " (λ������ռ� " + typeName + " ��)δ���� " + concreteTypeName + " ʵ�֡�");
//			}
//			var _loc_6:int = 0;
//			var _loc_7:* = des..accessor;
//			var _loc_5:* = new XMLList("");
//			for each (_loc_8 in _loc_7) {
//
//				var _loc_9:* = _loc_7[_loc_6];
//				with (_loc_7[_loc_6]) {
//					if (@declaredBy == typeName && unimplemented.indexOf(@name.toString()) != -1) {
//						_loc_5[_loc_6] = _loc_8;
//					}
//				}
//			}
//			accessors = _loc_5;
//			var _loc_5:int = 0;
//			var _loc_6:* = accessors;
//			while (_loc_6 in _loc_5) {
//
//				item = _loc_6[_loc_5];
//				throw new IllegalOperationError("��ȡ�� " + item.@name + " (λ������ռ� " + typeName + " ��)δ���� " + concreteTypeName + " ʵ�֡�");
//			}
//			return;
//		} // end function

		public static function preventConstructor(param1, param2:Class, param3:String = null):void {
			var _loc_4:String = null;
			if (param1["constructor"] == param2) {
				if (!param3) {
					_loc_4 = getQualifiedClassName(param1);
					param3 = _loc_4 + " ��Ϊ�����࣬������ʵ��!";
				}
				throw new IllegalOperationError(param3);
			}
			return;
		} // end function

	}
}
